Border Gateway Protocol (BGP) is an inter-domain network routing protocol that provides means for advertising communications routes in networks. One of the features of a conventional BGP is the ability to detect route loops. For example, if a BGP router receives a route advertisement, then with BGP the router can detect whether the route advertisement was already processed by the router and thus, whether the advertisement can be disregarded. BGP is described, for example, in “Terminology for Benchmarking BGP Device Convergence in the Control Plane,” RFC 4098, by H. Berkowitz et al., published in June 2005, and in “Border Gateway Protocol 4 (BGP-4),” RFC 4271, by Y. Rekhter, T. Li, and S. Hares, published in January 2006, and this disclosure assumes familiarity with BGP.
BGP can detect route loops using the AS_PATH attribute list, which is part of a route advertisement. For example, a router can determine that a route advertisement has been looped back to the router if, upon inspecting an AS_PATH attribute list included in the advertisement, the router determines that an autonomous system identifier of the router was already included in the AS_PATH attribute lists.
However, the situation may be complicated in the case of a route reflector. Route server extensions for route reflectors prohibit a BGP reflector from inserting the router's local autonomous system identifier, or a BGP group identifier, into an AS_PATH attribute list when the router reflects a route update to its external BGP clients. Because of this limitation, testing the presence of the autonomous system identifier in the AS_PATH attribute list may not conclusively detect routing loops.
One reason that a route reflector does not append its own autonomous system identifier to an AS_PATH attribute in a route advertisement is that the route reflector is expected to reflect the advertisement in a transparent way and without adding any self-authentication information to the route advertisement.
Further, the presence of a reflector's identifier in an AS_PATH attribute list could undesirably change a best-path calculation. For example, if an autonomous system identifier of a route reflector were included in an AS_PATH attribute list, then the identifier could be unnecessarily included in the best path calculation, or could be unnecessarily included in the best path calculation multiple times. The best paths calculated in such circumstances could be inaccurate.
By preventing a route reflector from adding the reflector's autonomous system identifier to an AS_PATH attribute list of the reflected route, the best-path behavior may be preserved. Because the autonomous system identifier of the route reflector is not added to the AS_PATH attribute list, the route reflector's identifier does not interfere with the best-path selection process performed by the routers.
However, because autonomous system identifiers of route reflectors are not appended by the route reflectors to AS_PATH attribute lists, determining whether a route advertisement is looped using a conventional loop detection process that inspects the AS_PATH attribute lists can be unreliable.